package com.yangwudi.Controller;

import cn.hutool.core.io.IoUtil;
import com.yangwudi.Service.UserService;
import com.yangwudi.Service.impl.UserServiceimpl;
import com.yangwudi.pojo.User;
import jakarta.annotation.Resource;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 用户信息Controller
 */
@RestController //@ResponseBody+@Controller     @ResponseBody -> 作用:将controller返回值直接作为响应体的数据直接响应；如果返回值是对象/集合 -> json -> 响应
public class UserController {

//    方式一 : 属性注入
//    @Qualifier("userServiceimpl")       //方案二   -在需要注入的bean中添加@Qualifier("beanName")
//    @Autowired   //依赖注入    //应用程序运行时，会自动查询该类的bean对象，并赋值给该成员变量
//    private UserService userService ;
    @Resource(name = "userServiceimpl2")    //方案二   -在需要注入的bean中添加@Resource(name = "beanName")
    private UserService userService ;

//    方式二 : 构造方法（构造器）注入;
//    private final UserService userService ;
////    @Autowired      -->     如果当前类中只存在一个构造函数，@Autowired可以省略
//    public UserController(UserService userService) {
//        this.userService = userService;
//    }

////    方式三 :setter注入
//    private UserService userService ;
//
//    @Autowired
//    public void setUserService(UserService userService) {
//        this.userService = userService;
//    }

    @RequestMapping("/list")
    public List<User> list() throws  Exception{
//        //1. 加载并读取user.txt文件，获取用户信息
//        InputStream in = this.getClass().getClassLoader().getResourceAsStream("user.txt");
//        ArrayList<String> lines = IoUtil.readLines(in, StandardCharsets.UTF_8,new ArrayList<>());
//
//        //2. 解析用户信息，封装为User对象 -> list集合
//        List<User> userList = lines.stream().map(line -> {
//            String[] parts = line.split(",");
//            Integer id = Integer.parseInt(parts[0]);
//            String username = parts[1];
//            String password = parts[2];
//            String name = parts[3];
//            Integer age = Integer.parseInt(parts[4]);
//            LocalDateTime updateTime = LocalDateTime.parse(parts[5], DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//            return new User(id, username, password, name, age, updateTime);
//        }).toList();
//
//        //3. 返回数据（json）
//        return userList;




        //1. 调用service，获取数据
        List<User> userList = userService.findAll();

        //2. 返回数据（json）
        return userList;
    }
}
